/**
 * @author kzeng
 */
jsx3.lang.Class.defineClass("ux.megatron.util.effect.GuiEffect", 
  null, 
  null,
  function(effect) {
  });

/*
//jsx3.gui.Block.prototype.oversetDisplay = jsx3.gui.Block.prototype.setDisplay;

//  jsx3.gui.Block.prototype.setDisplay = function (DISPLAY, bUpdateView){
////    var ss = new ux.megatron.util.effect.FadeEffect();
////    //alert(ux.megatron.util.effect.FadeEffect.do_fadeIn);
////    alert(ss);
//    //if (this.jsxdisplay != DISPLAY) {
//    //}else {
//    //  this.doFadein();
//    //}
//    
//    
//    if(this.isfade) {
//      this.doFadeout();
//    }else{
//      this.oversetDisplay(DISPLAY, bUpdateView);
//    }
//
//  }

*/  
  jsx3.gui.Block.prototype.prevSetDisplay = null;
  
  jsx3.gui.Block.prototype.allowFade = function(){
    this.prevSetDisplay = this.setDisplay;
    this.setDisplay = this.overSetDisplay;
  }

  jsx3.gui.Block.prototype.overSetDisplay = function(DISPLAY, bUpdateView){
    //if (this.jsxdisplay == DISPLAY) return;
    if(DISPLAY == jsx3.gui.Block.DISPLAYNONE) 
      this.prevSetDisplay(DISPLAY, bUpdateView);
      //this.fadeout();
    else
      this.fadein();
  }

  jsx3.gui.Block.prototype.HideBlock = function(){
    if(this.prevSetDisplay) 
      this.prevSetDisplay(jsx3.gui.Block.DISPLAYNONE, true);
    else
      this.setDisplay(jsx3.gui.Block.DISPLAYNONE, true);
  }
  
  jsx3.gui.Block.prototype.ShowBlock = function(){
    if(this.prevSetDisplay) 
      this.prevSetDisplay(jsx3.gui.Block.DISPLAYBLOCK, true);
    else
      this.setDisplay(jsx3.gui.Block.DISPLAYBLOCK, true);
  }

  jsx3.gui.Block.prototype.fadeIn = function (callback) {
    if(this.getDisplay() == jsx3.gui.Block.DISPLAYBLOCK) return;
    var objGUI = this.getRendered();
    if (objGUI != null) {
      try {
        objGUI.style.filter = 'alpha(opacity=0)';
        this.ShowBlock();
        var Fade = new ux.megatron.util.effect.FadeEffect();
        Fade.do_fadeIn(objGUI, [callback]);
      } catch(e) {}
    }
  }

  jsx3.gui.Block.prototype.fadeOut = function (callback) {
	jsx3.log('GuiEffect#fadeout callback : ' + callback);
    if(this.getDisplay() == jsx3.gui.Block.DISPLAYNONE) return;
    var objGUI = this.getRendered();
    if (objGUI != null) {
      try {
        var me = this;
        var Fade = new ux.megatron.util.effect.FadeEffect();
		jsx3.log('GuiEffect#infadeout callback : ' + callback);
        Fade.do_fadeOut(objGUI, [this.HideBlock, callback], this);
      } catch(e) {/* alert(e.message);throw e; */}
    }
  }